<?php
/**
 * @copyright (c) 2015 aircheng.com
 * @file chuanlan.php
 * @brief **短信发送接口
 * @author nswe
 * @date 2015/5/30 15:29:38
 * @version 3.3
 */

 /**
 * @class chuanlan
 * @brief 短信发送接口 http://www.duanxin10086.com/logins.html
 */
class chuanlan extends hsmsBase
{
	private $submitUrl = "http://www.duanxin10086.com/sms.aspx?action=send";

	/**
	 * @brief 获取config用户配置
	 * @return array
	 */
	private function getConfig()
	{
		//如果后台没有设置的话，这里手动配置也可以
		$siteConfigObj = new Config("site_config");

		return array(
			'userid'   => $siteConfigObj->sms_userid,
			'username' => $siteConfigObj->sms_username,
			'userpwd'  => $siteConfigObj->sms_pwd,
		);
	}

	/**
	 * @brief 发送短信
	 * @param string $mobile
	 * @param string $content
	 * @return
	 */
	public function send($mobile,$content)
	{
		$chuanglan_config =array();
	    $chuanglan_config['api_send_url'] = 'http://222.73.117.158/msg/HttpBatchSendSM';
	    //创蓝短信余额查询接口URL, 如无必要，该参数可不用修改
	    $chuanglan_config['api_balance_query_url'] = 'http://222.73.117.158/msg/QueryBalance';
	    //创蓝账号 替换成你自己的账号
	    $chuanglan_config['api_account'] = 'haienwl888';
	    //创蓝密码 替换成你自己的密码
	    $chuanglan_config['api_password'] = 'Hewl123456';
	    //创蓝接口参数
	    $postArr = array (
	      'account' => $chuanglan_config['api_account'],
	      'pswd' => $chuanglan_config['api_password'],
	      'msg' => $content,
	      'mobile' => $mobile,
	      'needstatus' => 'false',
	      'product' => '',
	      'extno' => ''
	     );
	    //即时发送
	    $res = $this->httpRequest($chuanglan_config['api_send_url'],'POST',$postArr);//POST方式提交
	    $res = explode(',',$res);
	    if($res[1]==0){
	        return 'success';
	    }else{
	        return 'fail';
	    }
	}
	/**
	 * CURL请求
	 * @param $url 请求url地址
	 * @param $method 请求方法 get post
	 * @param null $postfields post数据数组
	 * @param array $headers 请求header信息
	 * @param bool|false $debug  调试开启 默认false
	 * @return mixed
	 */
	public function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false) {
	    $method = strtoupper($method);
	    $ci = curl_init();
	    /* Curl settings */
	    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
	    curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
	    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间，如果设置为0，则无限等待 */
	    curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
	    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
	    switch ($method) {
	        case "POST":
	            curl_setopt($ci, CURLOPT_POST, true);
	            if (!empty($postfields)) {
	                $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
	                curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
	            }
	            break;
	        default:
	            curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
	            break;
	    }
	    $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;
	    curl_setopt($ci, CURLOPT_URL, $url);
	    if($ssl){
	        curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
	        curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
	    }
	    //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
	    curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
	    curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量，这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
	    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
	    curl_setopt($ci, CURLINFO_HEADER_OUT, true);
	    /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
	    $response = curl_exec($ci);
	    $requestinfo = curl_getinfo($ci);
	    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
	    if ($debug) {
	        echo "=====post data======\r\n";
	        var_dump($postfields);
	        echo "=====info===== \r\n";
	        print_r($requestinfo);
	        echo "=====response=====\r\n";
	        print_r($response);
	    }
	    curl_close($ci);
	    return $response;
	    //return array($http_code, $response,$requestinfo);
	}

	/**
	 * @brief 解析结果
	 * @param $result 发送结果
	 * @return string success or fail
	 */
	public function response($result)
	{
		if(strpos($result,'<returnstatus>Success</returnstatus>'))
		{
			return 'success';
		}
		else
		{
			return 'fail';
		}
	}

	/**
	 * @brief 配置文件
	 */
	public function getParam()
	{
		return array(
			"sms_userid"   => "商户ID",
			"sms_username" => "用户名",
			"sms_pwd"      => "密码",
		);
	}
}